home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / programming / e / lsestuff / newrkf.e < prev    next >
Text File  |  1999-11-29  |  1KB  |  69 lines

  1. OPT MODULE
  2.  
  3. EXPORT CONST RKF_NOKEY=-1
  4. EXPORT CONST RKFF_NOUP=%00000001,
  5.              RKFF_NODOWN=%00000010,
  6.              RKFF_NOREP=%00000100,
  7.              RKFF_HEXNUM=%00001000,
  8.              RKFF_DECNUM=%00010000
  9.  
  10. EXPORT OBJECT rkf
  11.    PRIVATE
  12.    filter:CHAR
  13.    currkey:CHAR
  14.    prevkey:CHAR
  15. ENDOBJECT
  16.  
  17. PROC input(rk) OF rkf
  18.    self.prevkey := self.currkey
  19.    self.currkey := rk
  20. ENDPROC
  21.  
  22. PROC get(filter) OF rkf
  23.    DEF temp
  24.    IF filter AND RKFF_NOREP
  25.       IF self.currkey = self.prevkey THEN RETURN RKF_NOKEY
  26.    ENDIF
  27.  
  28.    IF filter AND RKFF_NOUP
  29.       IF self.currkey > 127 THEN RETURN RKF_NOKEY
  30.    ENDIF
  31.  
  32.    IF filter AND RKFF_NODOWN
  33.       IF filter < 128 THEN RETURN RKF_NOKEY
  34.    ENDIF
  35.  
  36.    IF filter AND RKFF_HEXNUM
  37.       temp := self.currkey
  38.       IF temp > 127 THEN temp := temp - 128
  39.       IF (temp < 10) AND (temp > 0) THEN RETURN temp
  40.       SELECT temp
  41.       CASE 10
  42.          RETURN 0
  43.       CASE 32
  44.          RETURN 10
  45.       CASE 53
  46.          RETURN 11
  47.       CASE 51
  48.          RETURN 12
  49.       CASE 34
  50.          RETURN 13
  51.       CASE 18
  52.          RETURN 14
  53.       CASE 35
  54.          RETURN 15
  55.       DEFAULT
  56.          RETURN RKF_NOKEY
  57.       ENDSELECT
  58.    ENDIF
  59.  
  60.    IF filter AND RKFF_DECNUM
  61.       temp := self.currkey
  62.       IF temp > 127 THEN temp := temp - 128
  63.       IF (temp < 10) AND (temp > 0) THEN RETURN temp
  64.       RETURN RKF_NOKEY
  65.    ENDIF
  66.  
  67. ENDPROC self.currkey
  68.  
  69.